package com.mediacloud.app.newsmodule.view;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;

import com.mediacloud.app.assembly.banner.XScroller;

import java.lang.reflect.Field;

public class FixViewPager extends ViewPager {

    XScroller loopScroller;

    public FixViewPager(@NonNull Context context) {
        super(context);
        setScroller(context);
    }

    public FixViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        setScroller(context);
    }

    private void setScroller(Context context){
         loopScroller = new XScroller(context);

        try {
            Field field = ViewPager.class.getDeclaredField("mScroller");
            field.setAccessible(true);
            field.set(this, loopScroller );// 利用反射设置mScroller域为自己定义的xScroller
        } catch (Exception e) {
            Log.e("TAG", "setViewPagerScrollSpeed error:" + e.toString());
        }
    }

    /**
     * 设置切换到当前选择的页面
     *
     * @param item         选定页面的下标
     * @param smoothScroll 是否平滑滚动
     */
    @Override
    public void setCurrentItem(int item, boolean smoothScroll) {
        int current = getCurrentItem();
        // 如果页面相隔大于1,就设置页面切换时完成滑动的时间为0
        if (Math.abs(current - item) > 1) {
            loopScroller.setNoDuration(true);// 滑动前设置动画时间为0
            super.setCurrentItem(item, smoothScroll);
            loopScroller.setNoDuration(false);// 滑动结束后设置动画时间恢复
        } else {
            loopScroller.setNoDuration(false);
            super.setCurrentItem(item, smoothScroll);
        }
    }

}
